package projet.volleystat.automate;

import projet.volleystat.Player;
import projet.volleystat.Team;

/**
 * @author Lameira Nelaupe Ferrand Fiore
 * @version 1.0
 * Cette classe doit etre instanciee si un point est marque pendant un echange.
 * Un ace ne sera pas cree avec cette classe.
 * @see ServiceVolleyAction
 */
public class MarkedPointVolleyAction extends VolleyAction {
	
	protected Player targetPlayer;

	/**
	 * @param team
	 * @param player
	 * @param mark
	 * @param targetPlayer
	 * Instancie une point marque par joueur de l'equipe equipe, sa note et la cible.
	 */
	public MarkedPointVolleyAction(Team team, Player player, short mark, Player targetPlayer) {
		super(team, player, 0, mark);
		this.targetPlayer = targetPlayer;
	}
	
	/**
	 * @param mark
	 * @param targetPlayer
	 * Constructeur intelligent, prenant la note et le joueur cible et deduis le joueur ayant fait l'action et son equipe grace a l'automate.
	 */
	public MarkedPointVolleyAction(short mark, Player targetPlayer) {
		super(null, null, 0, mark);
		this.targetPlayer = targetPlayer;
	}
	
	@Override
	public int getId() {
		return 30;
	}

	/**
	 * @return Player
	 * Recupere le joueur qui a ete cible lorsque le point a ete marque.
	 */
	public Player getTargetPlayer() {
		return targetPlayer;
	}

	/**
	 * @param targetPlayer
	 * Defini le joueur cible lorsque le point a ete marque a targetPlayer.
	 */
	public void setTargetPlayer(Player targetPlayer) {
		this.targetPlayer = targetPlayer;
	}

	@Override
	public String toString() {
		String res = "";
		res = res.concat(getTime()+": ");
		res = res.concat("Point marque par "+getPlayer().getName()+"("+getTeam().getName()+") :");
		return res;
	}
}
